/*
 * @Description: 焊机状态处理
 * @Version: 1.0
 * @Date: 2024-03-12 18:50:57
 * @LastEditTime: 2024-03-12 19:35:32
 */
export function weldMachineState(id:string,weld:number){
    // 查找所有匹配的元素（可能有多个，特别是在 SVG use 标签的情况下）
    const allElements = document.querySelectorAll(`[id="${id}"]`);
    
    if (allElements.length === 0) {
        // 如果找不到，尝试在 SVG symbol 内查找
        const symbolElement = document.querySelector('#svg-TCM2280');
        if (symbolElement) {
            const symbolElements = symbolElement.querySelectorAll(`[id="${id}"]`);
            if (symbolElements.length > 0) {
                // 更新所有找到的元素
                symbolElements.forEach((el) => {
                    updateAnimateDur(el as SVGAnimateElement, weld, id);
                });
                return;
            }
        }
        return;
    }
    
    // 更新所有找到的元素
    allElements.forEach((el) => {
        updateAnimateDur(el as SVGAnimateElement, weld, id);
    });
}

function updateAnimateDur(element: SVGAnimateElement, weld: number, id: string) {
    if (!element) {
        return;
    }
    
    // 确保是 animate 元素
    if (element.tagName !== 'animate' && element.tagName !== 'ANIMATE') {
        return;
    }
    
    // 根据 weld 值设置闪烁状态
    // weld > 0: 工作时闪烁 (dur = '0.5s')
    // weld <= 0: 平常状态不闪烁 (通过移除 repeatCount 或设置很长的 dur)
    if (weld > 0) {
        // 工作时：恢复闪烁动画
        element.setAttribute('dur', '0.5s');
        element.setAttribute('repeatCount', 'indefinite');
        // 重新开始动画
        try {
            (element as any).beginElement?.();
        } catch (e) {
            // 忽略错误
        }
    } else {
        // 不工作时：停止动画
        // 方法1: 设置很长的 dur（但动画仍会运行，只是很慢）
        element.setAttribute('dur', '100000000h');
        
        // 方法2: 移除 repeatCount，让动画只运行一次后停止
        const repeatCountAttr = element.attributes.getNamedItem('repeatCount');
        if (repeatCountAttr) {
            repeatCountAttr.nodeValue = '0'; // 设置为 0，不重复
        } else {
            element.setAttribute('repeatCount', '0');
        }
        
        // 方法3: 尝试停止动画
        try {
            (element as any).endElement?.();
        } catch (e) {
            // 忽略错误
        }
        
    }
}

export function rollStateFun(isStop:boolean , start:number , end:number){
    for(let i = start; i <= end; i++){
        const element = document.querySelector(`#roll${i}`) as SVGElement | null;
        if (element){
            const color = isStop ? '#DC143C' : '#00ff00';
            // 获取当前样式，保留其他属性（如 fill-opacity, stroke 等）
            const currentStyle = element.getAttribute('style') || '';
            // 移除旧的 fill 值，但保留其他样式
            const cleanedStyle = currentStyle.replace(/fill\s*:\s*[^;]+;?/gi, '').trim();
            // 构建新样式：保留原有样式 + 新的 fill 值
            const newStyle = cleanedStyle ? `${cleanedStyle}; fill: ${color};` : `fill: ${color};`;
            element.setAttribute('style', newStyle);
            // 同时设置 fill 属性（双重保险）
            element.setAttribute('fill', color);
        }
    }
}
